\documentclass [a4paper,12pt] {article} 	% type de document
\usepackage [french] {babel} 		% langue utilisée
\usepackage [utf8] {inputenc} 		% permet d'utiliser les accents
\usepackage {enumerate}			% permet de créer des listes
\usepackage {fancyhdr}			% package permettant de faciliter les en-têtes de pages
\usepackage {graphicx}			% permet l'insertion d'images
\usepackage {eurosym}			%permet signe euro
\usepackage[colorlinks=true]{hyperref}  	%permet lien hypertexte

\hypersetup{urlcolor=blue,linkcolor=black,citecolor=black,colorlinks=true} %menu hypertexte

%page de présentation
\title {Rapport de soutenance \no3} 

\author {Alexandre Taupiac  \\
 Aurélien Baud \\
 David Renaudin \\
 Nicolas Meny }
\date {}
\begin {document}
\setcounter{page}{0}

\begin {figure}[!t]
    \center
	\includegraphics[scale=0.8]{rapport.png}
\end {figure}
\maketitle
\thispagestyle{empty}

%en-tete
\pagestyle{fancy}
\fancyhead[L] {\emph{Brawl Ultra Guns}}
\cfoot{\thepage} %numero de page
\clearpage

%table des matieres
\tableofcontents
\clearpage
%table des figures
\listoffigures 
\clearpage
%debut rapport
\section {Introduction}

Depuis la deuxième soutenance où nous vous avions montré un jeu possédant déjà de nombreuses fonctionnalités, notre soft a fait beaucoup de chemin au niveau de sa conception. \\

Rappelons succinctement l'histoire...un petit programme nommé Si'sharp est chargé par ses concepteurs de libérer le monde de l'oppression d'un programme maléfique nommé Van'Hithas qui a pris le contrôle de tout grâce à des BUG qu'il a créé lui-même. Pour l'aider dans sa quête il possèdera des armes qui lui permettront de détruire ces BUG. \\

Le jeu étant également basé sur un amusement à plusieurs, il bénéficie déjà d'un début de mode multijoueur qui n'en est encore qu'à ses premiers pas et qu'il nous reste encore à développer\\

Beaucoup d'améliorations donc dans tous les moteurs et les à-côtés du projet comme le site par exemple. A la deuxième soutenance nous vous avions présenté un personnage se déplaçant sur une carte avec des plateformes. Il pouvait se déplacer dans des niveaux possédant un défilement du fond, sauter, tirer avec différentes armes, mourir par les tirs des ennemis présents. Aujourd'hui nous sommes fiers de vous présenter une version encore plus aboutie et plus complète qu'à la deuxième soutenance. Remarquons donc l'ajout de niveaux plus complexes, de nouveaux ennemis plus coriaces que jamais, de nouveaux objets, une meilleur présentation du soft avec les menus, un début de multi et plein d'autres choses qui vous seront détaillées par la suite. \\

Nous sommes toujours une équipe soudée et joyeuse ! Ne nous lassant à aucun moment d'élaborer notre jeu et de nous amuser avec aussi pour être sur qu'il faut absolument y jouer et l'avoir sur sa machine en tant que hit de l'année 2011 ! \\


\clearpage

\section {Travail effectué}
\subsection {Moteur jeu}

Cette soutenance nous a permis d'approfondir un peu le gameplay.\\

En effet à la soutenance précédente, nous avions un personnage capable de se déplacer sur des plateformes , nous avions également inclus les tirs et une première IA.\\

Cette fois ci , nous devions nous concentrer sur de nouveaux éléments afin d'améliorer l'expérience de jeu. Pour cela, nous avons par exemple pensé à un système de générateur d'objets. En effet si vous avez déjà joué à Super Smash Bros Brawl dont notre jeu s'inspire en partie, l'un des éléments majeurs du gameplay est l'apparition d'objets permettant d'attaquer les adversaires ou bien de récupérer une partie de sa santé , c'est pourquoi ce système se devait d'être également présent dans notre jeu.\\

\begin{figure}[!h]
    \center
    \includegraphics[width=2cm]{munition1.PNG}
    \caption{Une des munitions apparaissants dans le jeu}
\end{figure}

Notre jeu se basant également sur un système d'armes et de tirs , nous avons pensé qu'il serait judicieux d'inclure parmis ces objets des munitions et de nouvelles armes que notre héros peut alors ramasser (pour le moment au nombre de deux mais il est probable que d'autres viennent s'y ajouter dans la version finale). En effet , nous avons modifié notre système de tir afin d'y inclure des munitions et non plus un nombre de tirs illimité comme c'était le cas précedemment.Nous en avons également profité pour ajouter des objets capables de restaurer la santé du héros ce qui pourra s'avérer très utile dans les niveaux remplis d'ennemis.\\

\begin{figure}[!h]
    \center
    \includegraphics[width=2cm]{soin.PNG}
    \caption{Objet permettant de restaurer une partie de la vie du héros}
\end{figure}

De plus, affin d'augmenter de nouveau la taille des niveaux, nous avons rajouté un scrolling vertical à nos niveaux. De cette manière, non seulement la taille des niveaux sont augmentée mais surtout, le joueur a désormais la possibilité de jouer sous n'importe quel résolution d'écran puisque chaque niveau s'adapte facilement horizontalement et verticalement.\\

\subsection {Moteur son}

Le travail sur le moteur son ne fut absolument pas énorme. En effet la majorité des bruitages et des musiques a déjà été créée. Nous avons simplement ajouté une musique entrainante intégrée au menu. 

\subsection {Moteur réseau}

\begin{figure}[!h]
    \center
    \includegraphics[width=16cm]{chat.PNG}
    \caption{Chat console}
\end{figure}

Après la création de notre chat en mode console qui marchait en local (cf. photo) il nous restait plus qu'à l'intégrer dans le jeu. Cela n'a pas été une chose facile. Le premier problème rencontré était au niveau de la transmission de l'information, plus précisément de la position du joueur, car après l'envoi, à la réception, la valeur était changée. Ce problème venait lors de la conversion de int à byte[]. Nous avons déjà essayé de traiter le message comme avec le chat en le transformant en string mais cela devenait trop lourd pour le processeur et rendait le jeu injouable. Après un petit moment de recherche, nous avons trouvé une autre fonction intégrée à C\# pour résoudre ce problème.\\

Ensuite on avait un problème d'affichage, où celui ci était troublé par toutes les pertubations du réseau (retard de traitement, d'envoi, etc. ). Nous avons dû implémenter une nouvelle classe exprès pour le multijoueur pour permettre de résoudre ce problème, le client envoie ses coordonnées au serveur qui renvoie à l'autre client. Puis ce dernier l'envoie à la classe multijoueur dans le personnage adverse, qui est affiché en permanence, même en l'absence de donnée reçue. Cela permet d'afficher le joueur en permanence et d'éviter les disparitions soudaines.\\

Du coté du fonctionnement, on retrouve un peu le système du chat de la soutenance 2. Chaque client se connectent au serveur, qui est en console pour qu'il puisse être géré complètement à partir du jeu (optique de mise en place d'une machine serveur). Au moment de la connexion le serveur envoie un identifiant au client pour qu'il puisse s'identifier auprès des autres joueurs et donc afficher sur le bon personnage sa position. Ensuite le client envoie ses informations au serveur (ex : ID+Pos.X+Pos.Y) qui redistribue entre tous les clients, le serveur évite de renvoyer l'information au même client qui réduit donc le temps de traitement des clients. Puis l'injection de ces informations dans la classe multi permet le déplacement de l'adversaire.\\

\begin{figure}[!h]
    \center
    \includegraphics[width=14cm]{reseau.png}
    \caption{Principe du réseau intégré au jeu}
\end{figure}


\subsection {Moteur graphique}

Avec la progression incessante de notre jeu dans les différents moteurs et l'augmentation du nombre de lignes de code, nous avons pensé qu'il serait judicieux de repenser notre menu pour améliorer sa lisibilité et faciliter le passage entre tous les états du jeu. Nous avons donc engagé des recherches pour finalement trouver une nouvelle structure pour le menu. Dans cette version « 2.0 », nous utilisons une gestion par boutons pour accéder aux différents parties du jeu (histoire, multijoueur, éditeur, etc). \\

Ainsi notre code a été grandement éclaircit et raccourcit pour le menu et l'intégration des fonctionnalités rajoutées depuis la deuxième soutenance n'en a été que plus facile. Nous avons réutilisé ce modèle de menu pour créer le menu options, le menu de choix de niveau dans le mode histoire, ainsi que le menu de gestion du multijoueur et de pause. Le fond présenté à la deuxième soutenance avec le titre de notre soft a été conservé.\\

\begin{figure}[!h]
    \center
    \includegraphics[width=13cm]{menu.PNG}
    \caption{Une image du menu}
\end{figure}

Nous avons également rajouté deux nouveaux types de décors à notre jeu :

\subparagraph{Les trappes}

Ces trappes sont simplement des blocs qui s'ouvrent ou se ferment en fonction du temps et peuvent piéger les malheureux joueurs qui s'y aventurent. Si les joueurs se trouvent piégés dans une trappe, ils se trouvent alors dans l'incapacité de se déplacer et ce jusqu'à l'ouverture de la trappe. Il s'agit donc là d'un élément important à ne pas négliger et pouvant influencer les décisions des joueurs.

\begin{figure}[!h]
    \center
    \includegraphics[width=4cm]{plateforme_ferme.PNG}
    \caption{Une trappe actuellement fermée}
\end{figure}

\begin{figure}[!h]
    \center
    \includegraphics[width=4cm]{plateforme_ouvert.PNG}
    \caption{Cette meme trappe ouverte et ne génant plus les joueurs}
\end{figure}

\subparagraph{Les pics}
Ces pics se comportent à première vue comme des blocs classiques mais si le joueur a le malheur de toucher un pic, il verra alors sa vie descendre et cela continuera tant que le joueur sera en contact avec le pic.

\begin{figure}[!h]
    \center
    \includegraphics[width=2cm]{pic.PNG}
    \caption{Un joli petit bloc de pic attendant un joueur}
\end{figure}

Le menu de pause a également été repensé affin de faciliter la gestion de l'utilisateur, désormais le joueur verra en arière plan l'aspect du niveau tel qu'il était lorsqu'il a mis le jeu en pause. Il aura alors toujours la possibilité de revenir au jeu ou de le quitter pour revenir au menu principal.

\begin{figure}[!h]
    \center
    \includegraphics[width=13cm]{menu_pause.jpg}
    \caption{Une image du menu de pause}
\end{figure}

\subsection {Site Web}

Par rapport à la deuxième soutenance le site web n'a pas grandement évolué au niveau de sa forme. Les pages sont restées les mêmes que celles présentées aux autres soutenances, à savoir :
\begin{itemize}
\item une page d'accueil présentant les news du site
\item une page sur l'histoire du jeu en lui même
\item une page présentant les membres de l'équipe Nescient avec le trombinoscope
\item une quatrième page présentant la progression dans la création du jeu
\item une page sur les problèmes que nous avons continué à rencontrer
\item les deux pages sur les différents téléchargements ont gagné du contenu
\item enfin la dernière page pour nous contacter est toujours là et fonctionnelle !\\ 
\end{itemize}

La seule différence apportée concerne le menu qui est devenu horizontal. De plus nous avons enlevé les grands titres de présentation de page pour les remplacer par une couleur. En effet dans le menu, la rubrique correspondant à la page actuellement ouverte possède une couleur différente des autres.\\
Pour cette soutenance nos efforts se sont donc portés sur le contenu des pages principalement, notamment en ce qui concerne les chronologies et la liste des problèmes rencontrés et solutions pour les résoudre.

\subsection{Intelligence Artificielle}

Concernant l'intelligence  artificielle , nous avons cette fois ci ajouté une nouvelle créature possédant des caractéristiques très différentes des créatures que nous avions présentées lors de la seconde soutenance. En effet alors que notre premier monstre était équipé d'une arme,  le nouveau ne l'est pas .\\

\begin{figure}[!h]
    \center
    \includegraphics[width=4cm]{mob1_rapport.PNG}
    \caption{Notre premier monstre et son arme}
\end{figure}

Cependant , ce nouvel ennemi n'en est pas moins dangereux car s'il ne dispose pas d'arme il pourra faire des dégâts par le simple fait de le toucher. En effet, vous remarquerez que des pics recouvrent son corps (ou en tout cas c'est ce que nous avons voulu représenter). Celui-ci est aussi plus résistants que les autres et il faudra en venir à bout si vous voulez pouvoir ramasser vos munitions en toute sécurité.\\

\begin{figure}[!h]
    \center
    \includegraphics[width=4cm]{mob2.PNG}
    \caption{Le second monstre (ne vous fiez pas à son air pacifique !)}
\end{figure}

Celui-ci, comme notre premier monstre, est entièrement parametrable via le système de fichier que nous vous avions rapidement exposé lors de la dernière soutenance ( pour rappel il suffit d'ajouter une ligne dans le fichier texte correspondant au niveau pour faire apparaitre un monstre dans celui-ci, par exemple vous écrirez la ligne : monstre2 100,0,100,200 pour obtenir un monstre du second type se déplaçant horizontalement des pixels 100 à 200 par rapport au niveau)\\


\section {Travail à effectuer}
\subsection {Moteur jeu}

Pour le moteur de jeu , il reste relativement peu de travail à effectuer en dehors d'éléments optionnels tels que de nouveaux objets à ramasser, de nouveaux types de plateformes,...\\

Cependant , nous allons devoir adapter certaines fonctions, déjà présentes dans le mode histoire, pour le mode multijoueur qui arrive tout juste. Nous devrons également nous occuper d'autres éléments nécessaires avec la version finale comme l'installeur, le manuel, ou encore les sauvegardes .\\

Nous réfléchissons également en ce moment à l'amélioration de l'éditeur, qui ne nous permet pour le moment que de faire des cartes relativement simples pour le mode multijoueur, en faisant une application séparé du jeu et dédiée uniquement à cette fonction afin de paramétrer plus facilement certains éléments pour définir l'IA, les limites de la cartes et quelques autres paramètres avancés qui nécessitent une interface plus claire qu'actuellement. Cela se fera sans doute en fonction du temps qu'ils nous restera lorsque les éléments principaux du jeu seront totalement terminés.\\
 

\subsection {Moteur son}

Le travail à effectuer est toujours le même : continuer à créer des bruitages pour les personnages, les tirs et trouver de nouvelles musiques.

\subsection {Moteur réseau}

La plus grande partie du réseau est terminée, car le plus délicat était de l'intégrer ce qui était fait au niveau du chat au jeu. La gestion donnée étant différente dans ces deux cas, il nous fallait réfléchir à un nouveau moyen de communication. Maintenant il nous reste plus qu'à gérer la vie, les tirs et les objets. 

\subsection {Moteur graphique}

Au niveau du menu le travail à effectuer se portera surtout à améliorer la qualité visuelle des boutons qui est pour l'instant relativement basique, ainsi qu'à continuer à relier les modes de jeu, les options (au fur et à mesure qu'elles se rajouteront dans le menu options) aux boutons correspondants.


\subsection {Site Web}

L'esthétique du site entre la deuxième et cette soutenance n'a évolué que sur quelques petits détails. Sur ce point là le travail sera donc minime, certainement 2 ou 3 petits rajouts, idées qui traverseront nos brillants esprits de développeurs. Le travail à apporter sera, comme toujours, porté sur le contenu des différentes pages comme les chronologies, les problèmes rencontrés et les solutions qui se sont offertes à nous ainsi que l'ajout des bonus et autres téléchargement de dossiers, rapports. 


\subsection{Intelligence Artificielle}

Au niveau de l'IA, nous possédons pour le moment deux types de monstres différents mais nous aimerions si possible inclure dans la version finale au moins un boss pour la fin du mode histoire(vous découvrirez enfin ce à quoi ressemble le terrible programme Van'Hithas créateur des BUG).\\

Nous pensons également inclure quelques nouveaux types de monstres mais ceci est encore à l'étude et dépendra beaucoup de notre inspiration. \\

Il faudra aussi adapter notre IA en fonction de l'option de difficulté qui devrait rapidement faire son apparition même si cela ne sera pas forcément très long compte tenu du fait que nous avons déjà prévu cela en rendant nos monstres entièrement parametrables au niveau des fréquences des tirs ou bien de la puissance.\\

Nous réfléchissons aussi à la possibilité d'ajouter une animation de mort aux monstres et à l'affichage d'une barre de vie en option afin de se repérer plus clairement et d'éviter que l'on ai l'impression que les ennemis ne subissent aucun dégât sachant qu'il faut un certains temps pour les tuer.\\


\clearpage
\section {Nos avis}
\subsection{Nos joies}

\subparagraph{Alexandre}
~~\\

On approche de plus en plus de la fin de notre projet même si il nous reste encore beaucoup de chemin à parcourir ! Mais quel bonheur de voir notre personnage évoluer dans un jeu de plus en plus abouti et complet. On commence à ce rendre compte que notre travail de groupe porte vraiment de bons fruits et c'est toujours une joie de se prendre 5 minutes de détente pour y jouer discrètement entre 2 lignes de code !\\

Nous continuons donc sur notre lancée !

\subparagraph{Aurélien}
~~\\

La meilleure partie du projet, et ce qui me fait le plus plaisir, est le fait que l'on aperçoit de plus en plus le jeu sous son état final. Cela nous encourage quand on repense à nos début avec notre tout premier personnage qui ne pouvait pas beaucoup se déplacer.\\

Depuis, il y a eu de nombreux progrès. Non seulement pour nous personnellement mais également dans le jeu. Quand on voit que notre joueur peut maintenant se déplacer dans un monde quasi-libre, qu'il combat plusieurs ennemis différents, qu'il peut tirer, qu'il possède un nombre limité de balles\ldots nous sommes fiers de nous ! 
On se rend alors compte de l'énorme part de travail accomplie.

\subparagraph{David}
~~\\

C'est un grand plaisir de voir notre jeu avancer au fur et à mesure par nos soins, en imaginant de nouvelle façon de programmer de nouvelles fonctions du jeu, allant d'un personnage seul qui bouger, à une interaction et gameplay plus important du jeu. \\

Cependant ce plaisir commence à arriver à sa fin car les plus grands points sont déjà fait, on arrive sur le détail, cependant c'est le moment ou on arrive au vrai gameplay et ou on va pouvoir vraiment jouer à notre propre jeu !

\subparagraph{Nicolas}
~~\\

Ce qui me rend le plus heureux, c'est que le jeu prend vraiment forme. On est maintenant loin de l'époque où notre petit bonhomme bleu ne pouvait que se déplacer tout seul et sur une carte qui faisait tout juste la taille de l'écran.\\

Désormais vous pouvez vous déplacer beaucoup plus librement, affronter quelques monstres, ramasser des objets, faire vos propres cartes,... Autant de possibilités qui rendent le jeu de plus en plus attractif à chaque fois. Nous ne sommes désormais plus si loin des jeux que l'on trouve dans le commerce et ça c'est vraiment génial! Nous avons maintenant assez de recul pour voir que l'évolution depuis le début du projet, où nous n'avions encore jamais entendu parler d'XNA, est colossale.\\

Il ne reste maintenant plus qu' une dernière ligne droite avant de présenter la version finale du projet et je ne peux qu'être enthousiaste à la vue du jeu qui promet d'être excellent.\\


\subsection{Nos peines}

\subparagraph{Alexandre}
~~\\

Toujours notre petit lot de problèmes classiques dans la programmation et de hauts et de bas dans nos petites vies ! C'est vrai que maintenant on commence à aborder les détails de notre jeu, ce qui le rendra vraiment intéressant et qui le démarquera des autres, ce qui fait qu'on ne peut plus seulement se reposer sur nos connaissances de base mais qu'il faut vraiment réflechir, chercher l'information, tester un nombre incalculable de fois différentes méthodes pour résoudre tel ou tel problème !\\

Mais en soit rien d'insurmontable !

\subparagraph{Aurélien}
~~\\

Bizarement, ce qui m'a le plus dérangé entre ces deux dernieres soutenances, ce fut les vacances et surtout l'absence d'acces à internet. En effet, lors des vacances, le fait d'être entierement coupé d'internet empeche la communication avec les autres membres du groupe et donc forcément cela nous bloque légèrement dans notre travail.\\

Cependant malgré cela le jeu avance relativement bien et donc il ne s'agit que d'une peine infime.

\subparagraph{David}
~~\\

On voit nettement le changement entre le début de notre projet et maintenant, car la plus grande partie de nos travaux, dépend du travail de chacun, on doit souvent attendre avant que quelqu'un finisse une partie pour pouvoir avancer soit même. C'est pour cela qu'il faut un bon dynamisme et un bonne motivation pour avancer tous à la même vitesse. \\

C'est donc le seul point négatif pour le moment, de dépendre de la vitesse d'avancement des autres, mais ce sont les contraintes du groupe qui sont narutelles.

\subparagraph{Nicolas}
~~\\

Après avoir dépassé la première moitié du projet, les choses sont devenues plus compliquées.\\

En effet, jusqu'à la seconde soutenance nous savions exactement ce que nous voulions obtenir et par quel chemin y parvenir. Hors les bases du gameplay ayant désormais été posées, il a fallu réfléchir à ce que nous pourrions apporter pour rendre le jeu plus riche et intéressant.\\

Il nous fallait également aborder le réseau, la chose qui à mon sens était le plus compliquée, ce qui fut la source principale de nos problèmes car même si nous avions réussi à créer un serveur pour la soutenance précédente, adapter le jeu dessus ne fut pas une tâche facile, loin de là !\\

Néanmoins cela rend le jeu bien plus intéressant à jouer et les possibilités beaucoup plus grandes. De plus, avec ce cap difficile franchi, il sera beaucoup plus facile d'atteindre nos objectifs pour la dernière soutenance.\\

\clearpage
\section {Conclusion}

En conclusion de ce rapport nous pouvons dire que, pour le moment, l'ensemble de plannig a été respecté, tous les menus  ont été raccrochés, les options sont fonctionnelles. Le réseau a également été intégré avec le serveur et le client dans le jeu. 2galement plein de petits détails ont été améliorés (menu) que nous n'avions pas envisagés à la deuxième soutenance.
Nous avons même pris un peu d'avance en imaginant, en plus de nouveaux monstres, des objets apparaissants dans les niveaux et des pièges pour les joueurs.\\

Nous sommes donc maintenant dans la dernière ligne droite de notre jeu car la fin approche à grand pas et qu'il ne faut pas trainer ! Cependant nous sommes confiants dans notre travail d'équipe et dans nos capacités pour être sur de vous présenter dans 2 mois un soft de qualité !

\clearpage

\section {Annexes}

\begin{figure}[!h]
    \center
    \includegraphics[width=13cm]{bad_situation.jpg}
    \caption{On dirait que ce joueur est dans une situation difficile}
\end{figure}

\begin{figure}[!h]
    \center
    \includegraphics[width=13cm]{page_site.png}
    \caption{La page d'accueil du site actuel}
\end{figure}

 \end {document} 